Function at 0x40ec40
Capabilities:
Authenticate hmac
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x4b8
mov esi, esp
mov dword [esi + 0x35c], 0x238ebe40
lea eax, [esi + 0x35c]
mov dword [esi], eax
mov eax, dword [esi + 0x35c]
mov ecx, eax
sub ecx, 0x82416854
je 0x40ffb4
jmp 0x40ec79
mov ecx, eax
sub ecx, 0x82f5a862
je 0x40fb90
jmp 0x40ec89
mov ecx, eax
sub ecx, 0x87f80b91
je 0x4121b6
jmp 0x40ec99
mov ecx, eax
sub ecx, 0x8886e591
je 0x4109b5
jmp 0x40eca9
mov ecx, eax
sub ecx, 0x89dc1a0e
je 0x411f16
jmp 0x40ecb9
mov ecx, eax
sub ecx, 0x8aa56204
je 0x41328e
jmp 0x40ecc9
mov ecx, eax
sub ecx, 0x8bc5c142
je 0x411f7b
jmp 0x40ecd9
mov ecx, eax
sub ecx, 0x8c6fba15
je 0x412099
jmp 0x40ece9
mov ecx, eax
sub ecx, 0x8c794f7f
je 0x412898
jmp 0x40ecf9
mov ecx, eax
sub ecx, 0x8d2cc87b
je 0x413706
jmp 0x40ed09
mov ecx, eax
sub ecx, 0x8e06d512
je 0x4112cf
jmp 0x40ed19
mov ecx, eax
sub ecx, 0x8e3522ed
je 0x410db4
jmp 0x40ed29
mov ecx, eax
sub ecx, 0x8f939f8e
je 0x410fa4
jmp 0x40ed39
mov ecx, eax
sub ecx, 0x909d1a1f
je 0x412c2b
jmp 0x40ed49
mov ecx, eax
sub ecx, 0x90e19689
je 0x4111fa
jmp 0x40ed59
mov ecx, eax
sub ecx, 0x921b580d
je 0x411ece
jmp 0x40ed69
mov ecx, eax
sub ecx, 0x933cb5cb
je 0x4121cb
jmp 0x40ed79
mov ecx, eax
sub ecx, 0x938ee03a
je 0x412f40
jmp 0x40ed89
mov ecx, eax
sub ecx, 0x93d37b70
je 0x412d2f
jmp 0x40ed99
mov ecx, eax
sub ecx, 0x94917113
je 0x40fe89
jmp 0x40eda9
mov ecx, eax
sub ecx, 0x950c47bb
je 0x40fd11
jmp 0x40edb9
mov ecx, eax
sub ecx, 0x95139e74
je 0x413720
jmp 0x40edc9
mov ecx, eax
sub ecx, 0x958b0e8c
je 0x41218c
jmp 0x40edd9
mov ecx, eax
sub ecx, 0x967f493a
je 0x413603
jmp 0x40ede9
mov ecx, eax
sub ecx, 0x9781cd33
je 0x40fcfa
jmp 0x40edf9
mov ecx, eax
sub ecx, 0x979ca099
je 0x412e1e
jmp 0x40ee09
mov ecx, eax
sub ecx, 0x991438d9
je 0x413512
jmp 0x40ee19
mov ecx, eax
sub ecx, 0x994fdfd9
je 0x410a77
jmp 0x40ee29
mov ecx, eax
sub ecx, 0x9b6690c2
je 0x4120a6
jmp 0x40ee39
mov ecx, eax
sub ecx, 0x9cb56bf8
je 0x40fce9
jmp 0x40ee49
mov ecx, eax
sub ecx, 0x9e904b4e
je 0x410d76
jmp 0x40ee59
mov ecx, eax
sub ecx, 0x9f6981db
je 0x410c07
jmp 0x40ee69
mov ecx, eax
sub ecx, 0x9fe72ef2
je 0x4112e2
jmp 0x40ee79
mov ecx, eax
sub ecx, 0xa01916cc
je 0x410dc1
jmp 0x40ee89
mov ecx, eax
sub ecx, 0xa12c3883
je 0x4134ce
jmp 0x40ee99
mov ecx, eax
sub ecx, 0xa2459b6f
je 0x40ff82
jmp 0x40eea9
mov ecx, eax
sub ecx, 0xa2f8bdf3
je 0x412e2b
jmp 0x40eeb9
mov ecx, eax
sub ecx, 0xa562f098
je 0x412109
jmp 0x40eec9
mov ecx, eax
sub ecx, 0xa6360b06
je 0x41357b
jmp 0x40eed9
mov ecx, eax
sub ecx, 0xa6992d5b
je 0x41376f
jmp 0x40eee9
mov ecx, eax
sub ecx, 0xa7793e44
je 0x40fe7c
jmp 0x40eef9
mov ecx, eax
sub ecx, 0xab8fec9a
je 0x40fd4c
jmp 0x40ef09
mov ecx, eax
sub ecx, 0xabd8f35d
je 0x412c12
jmp 0x40ef19
mov ecx, eax
sub ecx, 0xabdd5507
je 0x410d97
jmp 0x40ef29
mov ecx, eax
sub ecx, 0xad65316b
je 0x40ff9b
jmp 0x40ef39
mov ecx, eax
sub ecx, 0xae179e74
je 0x410ff6
jmp 0x40ef49
mov ecx, eax
sub ecx, 0xafc91639
je 0x41208c
jmp 0x40ef59
mov ecx, eax
sub ecx, 0xb0388ccc
je 0x413561
jmp 0x40ef69
mov ecx, eax
sub ecx, 0xb3c6381c
je 0x412c8f
jmp 0x40ef79
mov ecx, eax
sub ecx, 0xb4c82316
je 0x412f4d
jmp 0x40ef89
mov ecx, eax
sub ecx, 0xb4febff7
je 0x41129d
jmp 0x40ef99
mov ecx, eax
sub ecx, 0xb7f9ad7d
je 0x4128e4
jmp 0x40efa9
mov ecx, eax
sub ecx, 0xb86b98bd
je 0x41321e
jmp 0x40efb9
mov ecx, eax
sub ecx, 0xb8c01c81
je 0x4133f9
jmp 0x40efc9
mov ecx, eax
sub ecx, 0xbac4ff34
je 0x4119c6
jmp 0x40efd9
mov ecx, eax
sub ecx, 0xc2abc30a
je 0x41251e
jmp 0x40efe9
mov ecx, eax
sub ecx, 0xc340e29b
je 0x411f09
jmp 0x40eff9
mov ecx, eax
sub ecx, 0xc45230ba
je 0x410c14
jmp 0x40f009
mov ecx, eax
sub ecx, 0xc4ebbe7c
je 0x411e34
jmp 0x40f019
mov ecx, eax
sub ecx, 0xc4f8036c
je 0x413134
jmp 0x40f029
mov ecx, eax
sub ecx, 0xc797357b
je 0x411dab
jmp 0x40f039
mov ecx, eax
sub ecx, 0xca490014
je 0x412137
jmp 0x40f049
mov ecx, eax
sub ecx, 0xcac68644
je 0x410ada
jmp 0x40f059
mov ecx, eax
sub ecx, 0xcb175912
je 0x410311
jmp 0x40f069
mov ecx, eax
sub ecx, 0xccc161ad
je 0x411798
push eax
mov eax, esp
mov dword [esi + 0x460], eax
sub esp, 8
mov eax, esp
mov dword [esi + 0x308], eax
push eax
mov eax, esp
mov dword [esi + 0x464], eax
push eax
mov eax, esp
mov dword [esi + 0x30c], eax
push eax
mov eax, esp
mov dword [esi + 0x468], eax
sub esp, 0x10
mov eax, esp
mov dword [esi + 0x40], eax
sub esp, 0x88
mov eax, esp
and eax, 0xfffffff8
mov esp, eax
mov dword [esi + 0x70], eax
push eax
mov eax, esp
mov dword [esi + 0x100], eax
push eax
mov eax, esp
mov dword [esi + 0x46c], eax
sub esp, 8
mov eax, esp
mov dword [esi + 0x310], eax
push eax
mov eax, esp
mov dword [esi + 0x470], eax
sub esp, 8
mov eax, esp
mov dword [esi + 0x74], eax
push eax
mov eax, esp
mov dword [esi + 0x314], eax
push eax
mov eax, esp
mov dword [esi + 0x318], eax
push eax
mov eax, esp
mov dword [esi + 0x474], eax
sub esp, 8
mov eax, esp
mov dword [esi + 0x31c], eax
push eax
mov eax, esp
mov dword [esi + 0x478], eax
sub esp, 0x88
mov eax, esp
and eax, 0xfffffff8
mov esp, eax
mov dword [esi + 0x78], eax
mov ecx, dword [esi + 0x3d8]
mov eax, dword [esi + 0x2a4]
mov cl, byte [ecx]
mov byte [esi + 0x178], cl
mov byte [eax], 0x63
mov byte [eax + 1], 0xc1
mov ecx, 2
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 4
jne 0x40fc64
mov eax, dword [esi + 0x2a4]
xor ecx, ecx
cmp ecx, 4
jae 0x40fcb2
movzx ebx, byte [eax + ecx]
mov edi, 0x20f0284f
sub edi, ecx
or edi, ebx
mov edx, 0x4f
sub edx, ecx
and edx, ebx
xor edi, 0xffffffff
or edx, edi
mov edi, edx
shl edi, 1
and edi, 0x1e
xor edx, 0x8f
add edx, edi
add dl, 1
mov byte [eax + ecx], dl
add ecx, 1
jmp 0x40fc78
sub esp, 8
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401960
add esp, 8
mov dword [esi + 0x104], eax
mov eax, 0x9cb56bf8
cmp dword [esi + 0x104], 0
je 0x40fce0
mov eax, 0x9781cd33
mov ecx, dword [esi]
mov dword [ecx], eax
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x629a6840
mov byte [esi + 0xa], 0
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x950c47bb
mov dword [esi + 0x260], 0
jmp 0x4139c8
mov eax, dword [esi + 0x260]
mov dword [esi + 0x108], eax
mov eax, dword [esi + 0x104]
sub esp, 4
mov dword [esp], eax
call fcn.00401b80
add esp, 4
mov ecx, 0x28ada788
cmp dword [esi + 0x108], eax
jb 0x40fd43
mov ecx, 0xab8fec9a
mov eax, dword [esi]
mov dword [eax], ecx
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x629a6840
mov byte [esi + 0xa], 1
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x4b630d5d
jmp 0x4139c8
mov eax, dword [esi + 0xd4]
mov ecx, dword [esi + 0x3e0]
mov eax, dword [esi + 0xd4]
mov cl, byte [ecx]
mov byte [esi + 0x180], cl
mov byte [eax], 0xac
mov byte [eax + 1], 0x19
mov ecx, 2
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 6
jne 0x40feaf
mov eax, dword [esi + 0xd4]
xor ecx, ecx
cmp ecx, 6
jae 0x40ff03
movzx edi, byte [eax + ecx]
mov edx, ecx
add edx, 0x2577b33a
xor edx, edi
mov ebx, edx
shl ebx, 1
and ebx, 0xba
xor edx, 0x44a97fdd
mov edi, edx
add edi, ebx
mov ebx, edx
shl ebx, 1
and ebx, 2
and edx, 1
or edi, 1
xor edx, edi
add edx, ebx
mov byte [eax + ecx], dl
add ecx, 1
jmp 0x40fec3
mov ecx, dword [esi + 4]
sub esp, 8
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.004018f0
add esp, 8
fnstcw word [esi + 0x5e]
movzx eax, word [esi + 0x5e]
or eax, 0xc00
mov word [esi + 0x252], ax
fldcw word [esi + 0x252]
fistp dword [esi + 0x3c4]
fldcw word [esi + 0x5e]
mov eax, dword [esi + 0x3c4]
mov dword [esi + 0x44], eax
mov eax, dword [esi]
mov dword [eax], 0x42a67f0
jmp 0x4139c8
mov eax, 0x1f024486
cmp dword [esi + 0x44], 3
je 0x40ff92
mov eax, 0x4bb6eefc
mov ecx, dword [esi]
mov dword [ecx], eax
jmp 0x4139c8
mov eax, 0x82416854
cmp dword [esi + 0x44], 1
jl 0x40ffab
mov eax, 0x635f6b44
mov ecx, dword [esi]
mov dword [ecx], eax
jmp 0x4139c8
mov eax, 0xf03ffd6b
cmp dword [esi + 0x44], 0
je 0x40ffc4
mov eax, 0x4bb6eefc
mov ecx, dword [esi]
mov dword [ecx], eax
jmp 0x4139c8
mov ecx, dword [esi + 0x3f4]
mov eax, dword [esi + 0x2b8]
mov cl, byte [ecx]
mov byte [esi + 0x194], cl
mov byte [eax], 0x38
mov byte [eax + 1], 0x9f
mov ecx, 2
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 6
jne 0x410331
mov eax, dword [esi + 0x2b8]
xor ecx, ecx
cmp ecx, 6
jae 0x41037c
mov eax, dword [esi]
mov dword [eax], 0x5331aae1
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x3833660
jmp 0x4139c8
mov eax, dword [esi + 0x324]
sub esp, 4
mov dword [esp], eax
call fcn.00418290
add esp, 4
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410b0b
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408220
add esp, 4
mov dword [esi + 0x114], eax
mov eax, dword [esi + 0x114]
mov ecx, dword [esi + 0x324]
xor edx, edx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
call fcn.0040a8f0
add esp, 0x10
mov ecx, dword [esi + 0x64]
sub esp, 4
mov dword [esp], 1
call fcn.00408fa0
mov eax, dword [esi]
mov dword [eax], 0x782edf9
mov dword [esi + 0x264], 0
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x6285b3d7
jmp 0x4139c8
mov eax, dword [esi + 0x11c]
sub esp, 4
mov dword [esp], eax
call fcn.00418290
add esp, 4
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410c45
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408220
add esp, 4
mov dword [esi + 0x120], eax
mov eax, dword [esi + 0x120]
mov ecx, dword [esi + 0x11c]
xor edx, edx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
call fcn.0040a8f0
add esp, 0x10
mov ecx, dword [esi + 0x120]
mov eax, dword [esi + 0x114]
mov dword [esi + 0x370], eax
mov edx, dword [esi + 0x110]
mov al, byte [esi + 0x10]
mov byte [esi + 0xb], al
mov edi, dword [esi + 0x480]
mov eax, dword [esi + 0x47c]
mov ebx, dword [esi + 0x64]
sub esp, 0x1c
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov eax, dword [esi + 0x370]
mov dword [esp + 4], eax
mov dword [esp], ebx
movzx eax, byte [esi + 0xb]
and eax, 1
mov dword [esp + 0x18], eax
call fcn.004227f0
add esp, 0x1c
mov eax, dword [esi]
mov dword [eax], 0x22d6e502
jmp 0x4139c8
mov eax, dword [esi + 0x110]
sub esp, 4
mov dword [esp], eax
call fcn.00408230
add esp, 4
mov eax, dword [esi]
mov dword [eax], 0xabdd5507
jmp 0x4139c8
mov ecx, dword [esi + 0x64]
call fcn.00409a80
mov ecx, dword [esi + 0x64]
call fcn.00409080
mov eax, dword [esi]
mov dword [eax], 0x8e3522ed
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0xa01916cc
jmp 0x4139c8
mov eax, dword [esi + 0x3c]
mov eax, dword [esi]
mov dword [eax], 0x4bb6eefc
jmp 0x4139c8
mov eax, 0xfc1a08c4
test byte [esi + 0x11], 1
jne 0x410fb4
mov eax, 0x2635e705
mov ecx, dword [esi]
mov dword [ecx], eax
jmp 0x4139c8
mov eax, dword [esi + 0x2d4]
xor ecx, ecx
cmp ecx, 7
jae 0x411030
movzx edi, byte [eax + ecx]
mov edx, ecx
add edx, 0xf5
mov ebx, edi
shl ebx, 1
xor ebx, 0xffffffff
add ebx, edi
and edx, ebx
mov ebx, 0xa
sub ebx, ecx
and ebx, edi
or ebx, edx
add bl, 0x37
mov byte [eax + ecx], bl
add ecx, 1
jmp 0x410ffe
mov ecx, dword [esi + 4]
sub esp, 0xc
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 5
call fcn.00401b20
add esp, 0xc
cmp eax, 0
setne al
and al, 1
mov byte [esi + 0x12], al
mov eax, dword [esi]
mov dword [eax], 0x25e13c2
jmp 0x4139c8
mov ecx, dword [esi + 0x42c]
mov eax, dword [esi + 0xf0]
mov cl, byte [ecx]
mov byte [esi + 0x1cc], cl
mov byte [eax], 0x9a
mov byte [eax + 1], 0xaa
mov byte [eax + 2], 0x26
mov ecx, 3
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 5
jne 0x41121e
mov eax, dword [esi + 0xf0]
xor ecx, ecx
cmp ecx, 5
jae 0x411267
movzx edi, byte [eax + ecx]
mov ebx, ecx
add ebx, 0xb535e009
mov edx, ebx
and edx, edi
shl edx, 1
add ebx, edi
sub edx, ebx
mov edi, edx
shl edi, 1
and edi, 0x5c
xor edx, 0xd1
sub edx, edi
add dl, 2
mov byte [eax + ecx], dl
add ecx, 1
jmp 0x411232
mov ecx, dword [esi + 4]
sub esp, 0xc
mov dword [esp + 4], eax
mov dword [esp], ecx
mov dword [esp + 8], 3
call fcn.00401b20
add esp, 0xc
sub eax, 1
mov al, 1
sbb al, 0xff
and al, 1
mov byte [esi + 0x13], al
mov eax, dword [esi]
mov dword [eax], 0xb4febff7
jmp 0x4139c8
mov eax, dword [esi + 0xec]
mov eax, 0x4bb6eefc
test byte [esi + 0x13], 1
jne 0x4112b3
mov eax, 0xdf442c4c
mov ecx, dword [esi]
mov dword [ecx], eax
jmp 0x4139c8
mov eax, dword [esi + 0xe8]
mov eax, dword [esi]
mov dword [eax], 0x9fe72ef2
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x4bb6eefc
jmp 0x4139c8
mov eax, dword [esi + 0x20]
mov eax, dword [eax]
sub eax, 0x66889522
add eax, 2
add eax, 0x66889522
sub esp, 4
mov dword [esp], eax
call fcn.0043afb0
add esp, 4
mov dword [esi + 0x48], eax
mov eax, dword [esi + 0x20]
mov eax, dword [eax]
add eax, 2
mov dword [esi + 0x3bc], eax
mov eax, dword [esi + 0x1c]
mov eax, dword [eax]
mov dword [esi + 0x3b4], eax
mov eax, dword [esi + 0x48]
mov dword [esi + 0x3ac], eax
mov al, byte [esi + 0x1f8]
mov byte [esi + 0x244], al
mov byte [esi + 0x1fc], 0x4b
mov byte [esi + 0x1fd], 0x4a
mov byte [esi + 0x1fe], 0x4d
mov byte [esi + 0x1ff], 0x4c
mov eax, 4
mov byte [esi + eax + 0x1fc], 0
add eax, 1
cmp eax, 7
jne 0x411a38
xor eax, eax
cmp eax, 7
jae 0x411a6c
mov cl, byte [esi + eax + 0x1fc]
mov dl, al
add dl, 0x72
xor dl, cl
add dl, 0xc6
mov byte [esi + eax + 0x1fc], dl
add eax, 1
jmp 0x411a4a
mov eax, dword [esi + 0x1fc]
mov dword [esi + 0xd0], eax
xor edi, edi
mov ecx, 2
cmp edi, dword [0x44ce50]
jb 0x411a8c
jmp 0x411b19
mov edx, dword [0x44ce54]
cmp dword [edx + edi*8], 0xfc36c0a1
sete bl
xor ecx, ecx
test bl, 1
jne 0x411aa5
jmp 0x411b0a
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, dword [esi + 0xd0]
je 0x411b0a
mov eax, dword [0x44ce58]
xor ecx, ecx
sub esp, 0x20
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esi + 0x3b4]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esi + 0x3ac]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x3bc]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
call fcn.0043d4f0
add esp, 0x20
mov ecx, 1
test bl, 1
je 0x411b11
jmp 0x411b19
add edi, 1
jmp 0x411a7a
cmp ecx, 2
je 0x411b24
mov dword [esi + 0xd0], eax
mov eax, 0xecacf75
cmp dword [esi + 0xd0], 0
jge 0x411b37
mov eax, 0x7b379d9e
mov ecx, dword [esi]
mov dword [ecx], eax
jmp 0x4139c8
mov eax, dword [esi + 0x494]
mov ecx, dword [esi + 0x84]
sub eax, ecx
sar eax, 1
add eax, 1
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411dd4
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408220
add esp, 4
mov dword [esi + 0x12c], eax
mov eax, dword [esi + 0x12c]
mov ecx, dword [esi + 0x84]
sub esp, 8
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00439570
add esp, 8
mov eax, dword [esi]
mov dword [eax], 0x4397c3fe
jmp 0x4139c8
mov eax, dword [esi + 0x330]
sub esp, 4
mov dword [esp], eax
call fcn.00418290
add esp, 4
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411e65
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408220
add esp, 4
mov dword [esi + 0x130], eax
mov eax, dword [esi + 0x130]
mov ecx, dword [esi + 0x330]
xor edx, edx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
call fcn.0040a8f0
add esp, 0x10
mov ecx, dword [esi + 0x68]
sub esp, 4
mov dword [esp], 1
call fcn.00408fa0
mov eax, dword [esi]
mov dword [eax], 0x921b580d
mov dword [esi + 0x270], 0
jmp 0x4139c8
mov eax, dword [esi + 0x270]
mov dword [esi + 0x134], eax
mov eax, dword [esi + 0x32c]
sub esp, 4
mov dword [esp], eax
call fcn.00401b80
add esp, 4
mov ecx, 0x52bca814
cmp dword [esi + 0x134], eax
jb 0x411f00
mov ecx, 0xc340e29b
mov eax, dword [esi]
mov dword [eax], ecx
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x89dc1a0e
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x111c23f4
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x9b6690c2
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x8c6fba15
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x9b6690c2
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0xfa27176a
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0xe891a2b0
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x7a082c83
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0xe23d958a
jmp 0x4139c8
mov ecx, dword [esi + 0x1c]
call fcn.00418400
mov eax, dword [esi]
mov dword [eax], 0x933cb5cb
jmp 0x4139c8
mov eax, dword [esi + 0x1c]
mov eax, dword [esi]
mov dword [eax], 0x454c8dd6
jmp 0x4139c8
mov eax, dword [esi + 0x274]
mov dword [esi + 0x154], eax
mov ecx, dword [esi + 0x458]
mov eax, dword [esi + 0x2f8]
mov cl, byte [ecx]
mov byte [esi + 0x210], cl
mov byte [eax], 0xfa
mov byte [eax + 1], 9
mov ecx, 2
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 6
jne 0x41254a
mov eax, dword [esi + 0x2f8]
xor ecx, ecx
cmp ecx, 6
jae 0x412592
movzx edi, byte [eax + ecx]
mov edx, ecx
add edx, 0x836120c2
xor edx, edi
mov edi, edx
add edi, 0x35
mov ebx, 0xca
sub ebx, edx
or ebx, 1
add edx, ebx
or edi, 1
add edx, edi
add dl, 0x36
mov byte [eax + ecx], dl
add ecx, 1
jmp 0x41255e
mov ecx, dword [esi + 4]
sub esp, 8
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
add esp, 8
mov dword [esi + 0x158], eax
mov eax, 0x47d7cde7
cmp dword [esi + 0x158], 0
jne 0x4125c0
mov eax, 0xe299c04e
mov ecx, dword [esi]
mov dword [ecx], eax
mov dword [esi + 0x278], 0
jmp 0x4139c8
mov eax, dword [esi + 0x280]
mov dword [esi + 0x8c], eax
mov ecx, dword [esi + 0x8c]
mov eax, 0xb7f9ad7d
cmp ecx, dword [esi + 0x2c]
jb 0x4128b9
mov eax, 0xe5fe91dc
mov ecx, dword [esi]
mov dword [ecx], eax
jmp 0x4139c8
mov eax, dword [esi + 0x8c]
mov ecx, dword [esi + 0x160]
sub esp, 8
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401b90
add esp, 8
mov dword [esi + 0x60], eax
mov ecx, dword [esi + 0x45c]
mov eax, dword [esi + 0x300]
mov cl, byte [ecx]
mov byte [esi + 0x21c], cl
mov byte [eax], 0x2b
mov byte [eax + 1], 0x31
mov byte [eax + 2], 0x86
mov ecx, 3
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 7
jne 0x412929
mov eax, dword [esi + 0x300]
mov dword [esi + 0xa4], eax
xor ecx, ecx
cmp ecx, 7
jae 0x412998
mov eax, dword [esi + 0xa4]
movzx edi, byte [eax + ecx]
mov edx, 0x9e
sub edx, ecx
or edx, edi
mov ebx, 0x9e
sub ebx, ecx
mov eax, 0x9e
sub eax, ecx
or ebx, eax
and ebx, edi
xor edx, 0xffffffff
or ebx, edx
add bl, 0x1b
mov eax, dword [esi + 0xa4]
mov byte [eax + ecx], bl
add ecx, 0x5e2046b9
mov eax, ecx
shl eax, 1
and eax, 2
xor ecx, 1
add ecx, eax
add ecx, 0xa1dfb947
jmp 0x412943
sub esp, 8
mov eax, dword [esi + 0x60]
mov dword [esp], eax
mov eax, dword [esi + 0xa4]
mov dword [esp + 4], eax
call fcn.00401890
add esp, 8
mov dword [esi + 0x3c0], eax
mov ecx, dword [esi + 0x460]
mov eax, dword [esi + 0x304]
mov cl, byte [ecx]
mov byte [esi + 0x220], cl
mov byte [eax], 0xe5
mov byte [eax + 1], 0xfb
mov byte [eax + 2], 2
mov ecx, 3
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 4
jne 0x4129dd
mov eax, dword [esi + 0x304]
xor ecx, ecx
cmp ecx, 4
jae 0x412a32
movzx ebx, byte [eax + ecx]
mov edi, ecx
shl edi, 1
and edi, 0x186f76da
mov edx, ecx
xor edx, 0x8c37bb6d
add edx, edi
mov edi, edx
add edi, 0x34d99c53
or edi, ebx
add edx, 0x53
and edx, ebx
mov ebx, edi
xor ebx, edx
xor edx, edi
shl edx, 1
sub edx, ebx
add dl, 0x40
mov byte [eax + ecx], dl
add ecx, 1
jmp 0x4129f1
sub esp, 8
mov ecx, dword [esi + 0x60]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
add esp, 8
mov edi, eax
mov ecx, dword [esi + 0x464]
mov eax, dword [esi + 0x308]
mov cl, byte [ecx]
mov byte [esi + 0x224], cl
mov byte [eax], 0x94
mov byte [eax + 1], 0x9d
mov byte [eax + 2], 0x98
mov byte [eax + 3], 0x3f
mov ecx, 4
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 5
jne 0x412a71
mov eax, dword [esi + 0x308]
xor ecx, ecx
cmp ecx, 5
jae 0x412a9f
mov dl, byte [eax + ecx]
mov dh, cl
add dh, 0xca
xor dh, dl
add dh, 0xe
mov byte [eax + ecx], dh
add ecx, 1
jmp 0x412a85
sub esp, 8
mov ecx, dword [esi + 0x60]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004019c0
add esp, 8
xor ebx, ebx
cmp eax, 0
setg byte [esi + 0xe]
mov eax, dword [esi + 0x468]
mov ecx, dword [esi + 0x30c]
mov al, byte [eax]
mov byte [esi + 0x228], al
mov byte [ecx], 0xa3
mov byte [ecx + 1], 0xac
mov byte [ecx + 2], 0xa1
mov byte [ecx + 3], 0x33
mov eax, dword [esi + 0x30c]
xor ecx, ecx
cmp ecx, 4
jae 0x412b02
mov dl, byte [eax + ecx]
mov dh, cl
add dh, 0xcc
xor dh, dl
add dh, 4
mov byte [eax + ecx], dh
add ecx, 1
jmp 0x412ae8
sub esp, 8
mov ecx, dword [esi + 0x60]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004019c0
add esp, 8
xor edx, edx
cmp eax, 0
setg dl
mov eax, dword [esi + 0x8c]
imul ecx, eax, 0xc
add ecx, dword [esi + 0x88]
sub esp, 0x10
mov eax, dword [esi + 0x3c0]
mov dword [esp + 4], eax
mov dword [esp], edi
and edx, 1
mov dword [esp + 0xc], edx
mov al, byte [esi + 0xe]
mov bl, al
and ebx, 1
mov dword [esp + 8], ebx
call fcn.00418430
mov eax, dword [esi + 0x8c]
add eax, 1
mov dword [esi + 0x4a0], eax
mov eax, dword [esi]
mov dword [eax], 0x8c794f7f
mov eax, dword [esi + 0x4a0]
mov dword [esi + 0x280], eax
jmp 0x4139c8
mov eax, dword [esi + 0x30]
add eax, 0xfffffffc
mov dword [esi + 0x348], eax
mov eax, dword [esi]
mov dword [eax], 0x909d1a1f
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x33437af0
jmp 0x4139c8
mov eax, dword [esi + 0x28c]
add eax, 0xfffffff4
mov dword [esi + 0x164], eax
mov ecx, dword [esi + 0x164]
call fcn.004185b0
mov ecx, dword [esi + 0x164]
mov eax, 0xfaa28439
cmp ecx, dword [esi + 0x30]
je 0x412cbe
mov eax, 0xb3c6381c
mov ecx, dword [esi]
mov dword [ecx], eax
mov eax, dword [esi + 0x164]
mov dword [esi + 0x28c], eax
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0xe3bf11
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x4bb6eefc
jmp 0x4139c8
mov eax, dword [esi + 0x100]
mov ecx, dword [esi + 0x46c]
mov eax, dword [esi + 0x100]
mov cl, byte [ecx]
mov byte [esi + 0x22c], cl
mov byte [eax], 0x74
mov byte [eax + 1], 0xdb
mov ecx, 2
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 4
jne 0x412e51
mov eax, dword [esi + 0x100]
xor ecx, ecx
cmp ecx, 4
jae 0x412e7f
mov dl, byte [eax + ecx]
mov dh, cl
add dh, 0xaf
xor dh, dl
add dh, 0x95
mov byte [eax + ecx], dh
add ecx, 1
jmp 0x412e65
mov ecx, dword [esi + 4]
sub esp, 8
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
add esp, 8
mov dword [esi + 0x4c], eax
mov ecx, dword [esi + 0x470]
mov eax, dword [esi + 0x310]
mov cl, byte [ecx]
mov byte [esi + 0x230], cl
mov byte [eax], 0x8a
mov byte [eax + 1], 0x11
mov ecx, 2
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 6
jne 0x412eb7
mov eax, dword [esi + 0x310]
xor ecx, ecx
cmp ecx, 6
jae 0x412ef1
mov bl, byte [eax + ecx]
mov edi, ecx
shl edi, 1
and edi, 0x88
mov edx, ecx
xor edx, 0x44
add edx, edi
xor dl, bl
add dl, 0xac
mov byte [eax + ecx], dl
add ecx, 1
jmp 0x412ecb
mov ecx, dword [esi + 4]
sub esp, 8
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00401890
add esp, 8
mov dword [esi + 0x50], eax
mov eax, dword [esi + 0x4c]
test eax, eax
sete cl
mov eax, dword [esi + 0x50]
test eax, eax
sete al
or cl, al
mov eax, 0x18639ca2
test cl, 1
jne 0x412f2a
mov eax, 0x938ee03a
mov ecx, dword [esi]
mov dword [ecx], eax
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0xb4c82316
jmp 0x4139c8
mov eax, dword [esi + 0x4c]
sub esp, 4
mov dword [esp], eax
call fcn.00418290
add esp, 4
mov edi, eax
sub edi, 0x29ab617
add edi, 1
add edi, 0x29ab617
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412f87
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408220
add esp, 4
mov dword [esi + 0x168], eax
mov eax, dword [esi + 0x168]
mov ecx, dword [esi + 0x4c]
xor edx, edx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
call fcn.0040a8f0
add esp, 0x10
mov eax, dword [esi + 0x50]
sub esp, 4
mov dword [esp], eax
call fcn.00418290
add esp, 4
mov edi, eax
mov eax, edi
and eax, 1
or edi, 1
add edi, eax
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412ff9
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408220
add esp, 4
mov dword [esi + 0x16c], eax
mov eax, dword [esi + 0x16c]
mov ecx, dword [esi + 0x50]
xor edx, edx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
call fcn.0040a8f0
add esp, 0x10
mov ecx, dword [esi + 0x314]
mov eax, dword [esi + 0x74]
mov cl, byte [ecx]
mov byte [esi + 0x238], cl
mov byte [eax], 0x7d
mov byte [eax + 1], 0x69
mov byte [eax + 2], 0xe2
mov ecx, 3
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 8
jne 0x413057
mov edx, dword [esi + 0x74]
xor ecx, ecx
cmp ecx, 8
jae 0x4130d0
movzx eax, byte [edx + ecx]
mov dword [esi + 0x390], eax
mov ebx, ecx
xor ebx, 0x3268a927
mov edi, ecx
or edi, 0xcd9756d8
and edi, ebx
mov eax, edi
and eax, 2
xor eax, 2
mov ebx, edi
and ebx, 0xfffffffd
imul ebx, eax
mov eax, edi
and eax, 2
or edi, 2
imul edi, eax
add edi, ebx
mov ebx, ecx
xor ebx, 0xcd9756d8
add ebx, edi
xor ebx, dword [esi + 0x390]
mov eax, ebx
xor eax, 0x39
shl ebx, 1
and ebx, 0x8c
sub ebx, eax
add bl, 1
mov byte [edx + ecx], bl
add ecx, 1
jmp 0x413068
sub esp, 8
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00401960
add esp, 8
mov dword [esi + 0x170], eax
cmp dword [esi + 0x170], 0
setne al
and al, 1
mov byte [esi + 0x1a], al
mov eax, dword [esi]
mov dword [eax], 0x61ac3e03
jmp 0x4139c8
mov eax, dword [esi + 0x170]
sub esp, 4
mov dword [esp], eax
call fcn.00401b80
add esp, 4
mov dword [esi + 0x34], eax
mov eax, dword [esi + 0x34]
mov ecx, 8
mul ecx
seto dl
add eax, 4
setb cl
or dl, cl
mov ecx, 0xffffffff
test dl, 1
jne 0x41316c
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408220
add esp, 4
mov ecx, dword [esi + 0x34]
mov dword [eax], ecx
add eax, 4
mov dword [esi + 0x90], eax
mov eax, 0x22bd2568
cmp dword [esi + 0x34], 0
je 0x413198
mov eax, 0x40329562
mov ecx, dword [esi]
mov dword [ecx], eax
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x2f4a6f73
jmp 0x4139c8
mov eax, dword [esi + 0x94]
mov ecx, dword [esi + 0x170]
sub esp, 8
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401b90
add esp, 8
mov edi, eax
mov ecx, dword [esi + 0x474]
mov eax, dword [esi + 0x318]
mov cl, byte [ecx]
mov byte [esi + 0x23c], cl
mov byte [eax], 0x57
mov byte [eax + 1], 0x59
mov byte [eax + 2], 0xca
mov ecx, 3
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 4
jne 0x4132d2
mov eax, dword [esi + 0x318]
xor ecx, ecx
cmp ecx, 4
jae 0x413300
mov dl, byte [eax + ecx]
mov dh, cl
add dh, 0xd3
xor dh, dl
add dh, 0xe1
mov byte [eax + ecx], dh
add ecx, 1
jmp 0x4132e6
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401890
add esp, 8
mov dword [esi + 0x39c], eax
mov ecx, dword [esi + 0x478]
mov eax, dword [esi + 0x31c]
mov cl, byte [ecx]
mov byte [esi + 0x240], cl
mov byte [eax], 0xc5
mov byte [eax + 1], 0xff
mov byte [eax + 2], 0x76
mov ecx, 3
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 8
jne 0x41333c
mov eax, dword [esi + 0x31c]
xor ebx, ebx
cmp ebx, 8
jae 0x413391
mov cl, byte [eax + ebx]
mov byte [esi + 0xc], cl
mov edx, ebx
add edx, 1
mov ecx, ebx
xor ecx, 0xffffffff
or ecx, 0x96
mov dword [esi + 0x3b8], edi
mov edi, ebx
or edi, 0x96
add ecx, edi
mov edi, dword [esi + 0x3b8]
add edx, ecx
xor dl, byte [esi + 0xc]
add dl, 0x12
mov byte [eax + ebx], dl
add ebx, 1
jmp 0x413350
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401890
add esp, 8
mov ecx, dword [esi + 0x94]
shl ecx, 3
add ecx, dword [esi + 0x90]
sub esp, 8
mov dword [esp], eax
mov eax, dword [esi + 0x39c]
mov dword [esp + 4], eax
call fcn.004185f0
mov eax, dword [esi + 0x94]
add eax, 0xc2399f8b
add eax, 1
sub eax, 0xc2399f8b
mov dword [esi + 0x4a8], eax
mov eax, dword [esi]
mov dword [eax], 0x51e4f4fb
mov eax, dword [esi + 0x4a8]
mov dword [esi + 0x294], eax
jmp 0x4139c8
mov eax, dword [esi + 0x298]
mov edi, dword [esi + 0x29c]
mov dword [esi + 0x38], eax
mov ecx, dword [esi + 0x78]
sub esp, 4
mov dword [esp], 3
call fcn.00408fa0
mov eax, dword [esi + 0x38]
mov ecx, dword [esi + 0x16c]
mov edx, dword [esi + 0x168]
mov ebx, dword [esi + 0x78]
sub esp, 0x14
mov dword [esp], ebx
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edi
call fcn.00420940
add esp, 0x14
mov ecx, dword [esi + 0x78]
call fcn.00409a80
mov eax, 0x2cd2d1dd
cmp dword [esi + 0x38], 0
je 0x413462
mov eax, 0x24902b04
mov ecx, dword [esi]
mov dword [ecx], eax
jmp 0x4139c8
mov eax, dword [esi + 0x2a0]
add eax, 0xfffffff8
mov dword [esi + 0x174], eax
mov ecx, dword [esi + 0x174]
call fcn.004186c0
mov ecx, dword [esi + 0x174]
mov eax, 0x991438d9
cmp ecx, dword [esi + 0x38]
je 0x4134fd
mov eax, 0xa12c3883
mov ecx, dword [esi]
mov dword [ecx], eax
mov eax, dword [esi + 0x174]
mov dword [esi + 0x2a0], eax
jmp 0x4139c8
mov eax, dword [esi + 0x354]
sub esp, 4
mov dword [esp], eax
call fcn.00408230
add esp, 4
mov eax, dword [esi]
mov dword [eax], 0x2cd2d1dd
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x3f342627
jmp 0x4139c8
mov eax, dword [esi + 0x16c]
sub esp, 4
mov dword [esp], eax
call fcn.00408230
add esp, 4
mov eax, dword [esi]
mov dword [eax], 0xd93c0ab3
jmp 0x4139c8
aam 0x70
or eax, 0xc7068bb4
add byte [ebx + 0x3b], bl
stc
fsubp st(1)
mov ah, 3
add byte [eax], al
mov esp, 0x7b999199
adc al, 0xa3
ror dword [ebx - 0x1eff38fa], 1
stosb byte es:[edi], al
xor dword [ebx - 0x17], edx
lahf
add eax, dword [eax]
add byte [ebx - 0x1bff38fa], cl
cmpsb byte [esi], byte es:[edi]
mov esi, 0x392e9eb
add byte [eax], al
push edx
push 0x9586ca61
xor byte [esp + eax*2 - 0x10], bl
push ss
xchg dword [edi + esi*2], edi
mov ch, 0xe0
mov eax, dword [esi]
mov dword [eax], 0x7e7595a7
jmp 0x4139c8
mov eax, dword [esi]
mov dword [eax], 0x89dc1a0e
jmp 0x4139c8
test eax, 0x68f37c50
dec edi
mov ecx, 0x1b5b9345
insb byte es:[edi], dx
stosb byte es:[edi], al
adc al, 0xf6
lds esp, [esi - 0x74eba3e0]
inc esi
dec eax
sub esp, 4
mov dword [esp], eax
call fcn.0043b070
add esp, 4
mov eax, dword [esi]
mov dword [eax], 0xe6cc9329
jmp 0x4139c8
mov ecx, dword [esi + 0x2fc]
mov eax, dword [esi + 0x6c]
mov cl, byte [ecx]
mov byte [esi + 0x214], cl
mov byte [eax], 0x7d
mov byte [eax + 1], 0x61
mov byte [eax + 2], 0x9e
mov ecx, 3
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 6
jne 0x413790
mov eax, dword [esi + 0x6c]
xor edx, edx
cmp edx, 6
jae 0x413802
movzx ecx, byte [eax + edx]
mov dword [esi + 0x38c], ecx
mov edi, edx
and edi, 0xed52ab58
mov ecx, edx
and ecx, 2
xor ecx, 2
mov ebx, edx
and ebx, 0xed52ab58
imul ebx, ecx
mov ecx, edx
and ecx, 2
or edi, 2
imul edi, ecx
add edi, ebx
mov ebx, edx
xor ebx, 0xed52ab5a
add ebx, edi
xor ebx, dword [esi + 0x38c]
add ebx, 0x5d62a73d
mov ecx, ebx
shl ecx, 1
and ecx, 2
xor ebx, 1
add ebx, ecx
mov byte [eax + edx], bl
add edx, 1
jmp 0x4137a1
sub esp, 8
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401960
add esp, 8
mov eax, dword [esi]
mov dword [eax], 0x39c99734
jmp 0x4139c8
jmp 0x40ec63